From 57eef8c6129fb7b5a0dd8b466bb4554a028fc653 Mon Sep 17 00:00:00 2001 From: robertl Date: Thu, 28 Jul 2005 01:24:00 +0000 Subject: [PATCH] Coto: language fix. XMLGeneric: fix case when input buffer of cdata may be fragged. Coalesce and return on the ending tag. --- gpsbabel/coto.c | 3 ++- gpsbabel/xmlgeneric.c | 9 ++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/gpsbabel/coto.c b/gpsbabel/coto.c index 139c7ad4a..a325d0ffb 100644 --- a/gpsbabel/coto.c +++ b/gpsbabel/coto.c @@ -282,6 +282,7 @@ data_read(void) static void coto_prepare_wpt_write(struct pdb *opdb) { + struct appinfo *ai; opdb->name[PDB_DBNAMELEN-1] = 0; opdb->attributes = PDB_ATTR_BACKUP; opdb->type = MYTYPEWPT; @@ -293,7 +294,7 @@ coto_prepare_wpt_write(struct pdb *opdb) opdb->appinfo_len = APPINFO_PACKED_SIZE; opdb->appinfo = xcalloc(APPINFO_PACKED_SIZE,1); - struct appinfo *ai = (struct appinfo *) opdb->appinfo; + ai = (struct appinfo *) opdb->appinfo; ai->renamedCategories = 31; // Don't ask me why... if (zerocat) diff --git a/gpsbabel/xmlgeneric.c b/gpsbabel/xmlgeneric.c index 9ba56770b..f9877da1f 100644 --- a/gpsbabel/xmlgeneric.c +++ b/gpsbabel/xmlgeneric.c @@ -180,11 +180,6 @@ xml_cdata(void *dta, const XML_Char *s, int len) estr = (char *) cdatastr.mem + strlen(cdatastr.mem); memcpy(estr, s, len); estr[len] = 0; - - cb = xml_tbl_lookup(current_tag.mem, cb_cdata); - if (cb) { - (*cb)(estr, NULL); - } } static void @@ -196,6 +191,10 @@ xml_end(void *data, const char *el) if (strcmp(s + 1, el)) { fprintf(stderr, "Mismatched tag %s\n", el); } + cb = xml_tbl_lookup(current_tag.mem, cb_cdata); + if (cb) { + (*cb)( (char *) cdatastr.mem, NULL); + } cb = xml_tbl_lookup(current_tag.mem, cb_end); if (cb) { -- 2.30.2